iT邦幫忙

2025 iThome 鐵人賽

DAY 6
1

Day 6: 負載均衡器與儲存服務實作

牧場主今日工作

昨天我們建好了牧場的 GPS 導航系統 (PowerDNS),今天要一口氣建造兩個重要設施:大倉庫和交通指揮中心!就像牧場需要一個共用的飼料倉庫,還需要一個智慧分流器來避免牛羊們擠成一團一樣。

今天我們要在 bastion-infra-server 上同時建置 NFS 共享儲存和 HAProxy 負載均衡器,讓它成為我們數位牧場的後勤核心!

技術背景與概念

為什麼需要共享儲存和負載均衡?

在 Kubernetes 多叢集環境中,我們需要兩個關鍵的基礎設施:

共享儲存需求:

  • Rancher 備份:Rancher 管理資料的定期備份
  • 應用程式資料:Kubernetes Pod 的持久化儲存

負載均衡需求:

  • API Server 高可用:為 Kubernetes API Server 提供負載分散
  • Ingress 流量分散:應用服務的統一入口點
  • Rancher UI 存取:Rancher 管理介面的負載分散

我們的服務架構

今天建置的服務架構:

bastion-infra-server (192.168.0.135):
├── PowerDNS (Port 53)        # Day 5 完成
├── NFS Server (Port 2049)    # 今天建置
└── HAProxy (Port 80/443)     # 今天建置

負載均衡配置:

Port 80/443 → Rancher UI      (rancher-server-1) - 根據域名分流
Port 80/443 → Applications    (rancher-master-1, rancher-worker-1) - 根據域名分流

第一部分:NFS 共享儲存建置

https://ithelp.ithome.com.tw/upload/images/20250821/20141794dV1AHPm8UE.png

安裝與設定 NFS Server

設定環境變數並安裝 NFS:

# 設定環境變數
export BASTION_IP="192.168.0.135"
export NETWORK_CIDR="192.168.0.0/24"

# 安裝 NFS Server
sudo apt update
sudo apt install -y nfs-kernel-server nfs-common

# 建立 NFS 共享目錄
sudo mkdir -p /nfs/rancher-backup    # Rancher 備份資料
sudo mkdir -p /nfs/nfs-client        # 一般 K8s 儲存

# 設定目錄權限
sudo chown -R nobody:nogroup /nfs
sudo chmod -R 777 /nfs/rancher-backup
sudo chmod -R 777 /nfs/nfs-client

設定 NFS 匯出規則

編輯 /etc/exports 設定檔:

sudo vim /etc/exports

新增匯出規則:

# NFS 匯出設定
/nfs/rancher-backup 192.168.0.0/24(rw,sync,no_subtree_check,no_root_squash)
/nfs/nfs-client     192.168.0.0/24(rw,sync,no_subtree_check,no_root_squash)

啟動 NFS 服務

# 重新載入匯出設定
sudo exportfs -ra

# 啟動並啟用 NFS 服務
sudo systemctl start nfs-kernel-server
sudo systemctl enable nfs-kernel-server

# 檢查服務狀態
sudo systemctl status nfs-kernel-server
sudo showmount -e localhost

第二部分:HAProxy 負載均衡器建置

https://ithelp.ithome.com.tw/upload/images/20250821/20141794zGRhlYAlHf.png

安裝 HAProxy

# 安裝 HAProxy
sudo apt install -y haproxy

# 備份原始設定檔
sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.backup

暫時使用預設設定檔

目前先使用 HAProxy 的預設設定檔,確保服務能正常啟動。預設設定檔通常包含基本的統計監控頁面,明天我們將建立完整的 Rancher 多叢集負載均衡配置。

啟動 HAProxy 服務

# 驗證設定檔語法
sudo haproxy -f /etc/haproxy/haproxy.cfg -c

# 如果語法正確,啟動服務
sudo systemctl start haproxy
sudo systemctl enable haproxy

# 檢查服務狀態
sudo systemctl status haproxy

服務驗證與測試

檢查所有服務狀態

# 檢查所有服務狀態
sudo systemctl status nfs-kernel-server haproxy

# 檢查監聽埠號
sudo ss -tulnp | grep -E "(53|80|443|2049|8404)"

# 檢查 NFS 匯出
sudo showmount -e localhost

# 檢查 HAProxy 統計介面
curl -I http://${BASTION_IP}:8404/stats

# 如果無法連線,檢查 HAProxy 服務狀態
sudo systemctl status haproxy
sudo journalctl -u haproxy -n 10

NFS 掛載測試

在其他 VM 上測試 NFS 掛載:

# 安裝 NFS 客戶端 (在其他 VM 上)
sudo apt install -y nfs-common

# 測試掛載
sudo mkdir -p /mnt/nfs-test
sudo mount -t nfs 192.168.0.135:/nfs/nfs-client /mnt/nfs-test

# 測試讀寫
echo "NFS 測試 - $(date)" | sudo tee /mnt/nfs-test/test.txt
cat /mnt/nfs-test/test.txt

# 清理
sudo umount /mnt/nfs-test

HAProxy 連線測試

# 測試 HAProxy 統計頁面
curl http://192.168.0.135:8404/stats

# 測試各個服務埠號 (注意:如果 HAProxy 服務沒啟動,這些埠號不會監聽)
nc -zv 192.168.0.135 80    # HTTP Frontend
nc -zv 192.168.0.135 443   # HTTPS Frontend

# 如果所有埠號都無法連線,HAProxy 服務可能有問題
# 常見問題排除:
# 1. 檢查設定檔語法:sudo haproxy -f /etc/haproxy/haproxy.cfg -c
# 2. 檢查服務狀態:sudo systemctl status haproxy  
# 3. 檢查日誌:sudo journalctl -u haproxy -n 20
# 4. 手動啟動:sudo systemctl start haproxy

今日總結與明日預告

今天我們成功在 bastion-infra-server 上完成了兩個重要的基礎設施建置:NFS 共享儲存和 HAProxy 負載均衡器。這兩個服務將成為我們 Rancher 多叢集環境的重要後盾。

重點回顧:

  • 完成 NFS Server 建置,提供 Rancher 備份和 K8s 儲存
  • 建置 HAProxy 負載均衡器,準備多叢集的流量分散
  • 建立 HAProxy 負載均衡器的詳細配置檔(需進一步調整)
  • 完成 NFS 服務驗證,基礎儲存服務運作正常

明天我們將調整和優化 HAProxy 負載均衡器的設定,解決設定檔問題並完成針對 Rancher 多叢集環境的配置,讓負載均衡器能正常運作。


💡 牧場主小提示:HAProxy 統計頁面是監控負載均衡器的好工具!可以即時查看後端服務的健康狀態。記得加入書籤:http://${BASTION_IP}:8404/stats


上一篇
Day 5: 搭建牧場基礎設施 - PowerDNS 服務建置
下一篇
Day 7: 外部網域服務建置 - DuckDNS 免費域名設定
系列文
牧場主的 K8s 放牧日記22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言